home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / gg / guile-1.4.1.lha / ChangeLog.goops < prev    next >
Text File  |  2001-03-10  |  41KB  |  1,211 lines

  1. 2001-03-09  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  2.  
  3.     * Version 1.0.2 released.
  4.  
  5.     * GOOPS-VERSION (GOOPS_MINOR_VERSION): Bumped to 0.2.
  6.  
  7.     * goops.scm (define-method): Only accept new syntax.
  8.  
  9.     * Makefile.am (goops_sources): Added old-define-method.scm.
  10.  
  11.     * old-define-method.scm: New file.
  12.     
  13.     * goops.texi (VERSION): Bumped to version 0.3.
  14.  
  15.     * goops-tutorial.texi, goops.texi: Updated to reflect new
  16.     define-method syntax.
  17.  
  18.     * NEWS: Updated with some lacking history.
  19.  
  20.     * save.scm, goops.scm, composite-slot.scm, active-slot.scm:
  21.     Use new method syntax.
  22.  
  23.     * configure.in: Don't remove -lqthreads from LIBS until all checks
  24.     involving linking with libguile has been performed.
  25.  
  26. 2001-03-05  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  27.  
  28.     * THANKS: Flushed.
  29.  
  30.     * GOOPS-VERSION    (GOOPS_MINOR_VERSION): Bumped to 0.1.
  31.  
  32.     * Version 1.0 released.
  33.  
  34.     * Makefile.am (man_MANS): Install manpage.
  35.  
  36.     * guile-oops.1: Manpage from Guile distribution.
  37.  
  38.     * relpath: New script.
  39.  
  40.     * configure.in (GUILEVERSION): Set to version of Guile.
  41.  
  42.     * Makefile.am: Use GUILEVERSION in installpaths.
  43.     Use relpath to install relative links for libgoopscore.
  44.  
  45. 2001-03-04  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  46.  
  47.     * GOOPS-VERSION
  48.     (GOOPS_MAJOR_VERSION, GOOPS_MINOR_VERSION): Bumed to 1.0.
  49.     (LIBGOOPSCORE_MAJOR_VERSION): Bumbed to 5.
  50.  
  51.     * goops.c, goops.h (scm_sys_tag_body): Added.
  52.  
  53.     * dispatch.scm (method-cache-install!): Fixed n-specializers.
  54.  
  55.     * compile.scm (compile-method): Tag method closure for body
  56.     expansion.
  57.  
  58.     * goops.scm (change-object-class): Quote empty list constants.
  59.     (method): Reverted previous change (enclosing body);
  60.     Quote empty list.
  61.     (initialize <method>): Supply `dummy-procedure' as default instead
  62.     of creating a new closure.
  63.     
  64.     * internal.scm: Re-export (oop goops) without copying bindings.
  65.  
  66.     * configure.in: Test for GOOPS in libguile.
  67.  
  68.     * goops.h: Renamed class --> cls, new --> newinst in order to
  69.     accomodate C++.
  70.  
  71.     * configure.in, Makefile.am: Added kludge to prevent
  72.     libgoopscore.so to be linked with libqthreads.so (which strangely
  73.     generates a lintian shlib-with-non-pic-code error).
  74.  
  75. 2000-10-21  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  76.  
  77.     * goops.scm (min-fixum, max-fixnum): New constants.
  78.  
  79. 2000-08-26  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  80.  
  81.     * goops.c (create_basic_classes): Pass a string, not a symbol, to
  82.     scm_make_vtable_vtable.
  83.  
  84. 2000-08-09  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  85.  
  86.     * goops.c (scm_sys_modify_instance, scm_sys_modify_class):
  87.     Rewritten (In Guile-1.4, we can no longer rely on
  88.     SCM_REDEFER/REALLOW_INTS.)
  89.     (scm_wrap_init, scm_wrap_object): Adapt to recent change to
  90.     structs in guile.
  91.  
  92. 2000-08-08  Mikael Djurfeldt  <mdj@linnaeus.mit.edu>
  93.  
  94.     * goops.c (sort_applicable_methods): Changed SCM_CAR (X) = Y to
  95.     SCM_SETCAR (X, Y) + code layout.
  96.  
  97. 2000-07-02  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  98.  
  99.     * dispatch.scm (memoize-method!): Reimplemented the previous
  100.     change on the scheme level.
  101.  
  102.     * goops.c (call_memoize_method): Reverted previous change.
  103.  
  104.     * goops.c (call_memoize_method): Made thread safe.  Method
  105.     memoization is synchronized between threads via a mutex, but the
  106.     case where one thread is dispatching using the method cache being
  107.     altered by another thread was not handled correctly.
  108.  
  109. 2000-06-30  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  110.  
  111.     * Version 0.9.0 released.
  112.  
  113.     * GOOPS-VERSION: Bumped to GOOPS version 0.9.0 and LIBGOOPSCORE
  114.     version 4.0.0.
  115.  
  116.     * configure.in: Substitute LIBGOOPSCORE version variables.
  117.  
  118.     * Makefile.am (libgoopscore_la_LDFLAGS): Use LIBGOOPSCORE version
  119.     numbers.
  120.  
  121.     * GOOPS-VERSION: Updated for shell compatibility, and added
  122.     LIBGOOPSCORE versions.  (Thanks to Karl M. Hegbloom.)
  123.  
  124.     * goops-snarf.h: Updated for Guile-1.4 snarf.h.
  125.  
  126.     * goops.h, goops.c (scm_module_goops): New variable.
  127.  
  128.     * goops.c (scm_sys_invalidate_method_cache_x): Strip rest args
  129.     flag.  (Thanks to Nicolas Neuss.)
  130.     (scm_init_goops, make_class_from_template): Use scm_module_goops.
  131.  
  132. 2000-06-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  133.     
  134.     * goops.h (SCM_TOP_LEVEL_LOOKUP_CLOSURE): Conditionally provide
  135.     for backward compatibility.
  136.  
  137.     * goops.c: Use SCM_TOP_LEVEL_LOOKUP_CLOSURE instead of
  138.     SCM_CDR    (scm_top_level_lookup_closure_var).
  139.  
  140. 2000-06-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  141.  
  142.     * Version 0.1.8 released.  (This is a quick release in order to
  143.     avoid lot's a bug-reports due to 0.1.6's incompatibility with
  144.     Guile-1.4.)
  145.  
  146.     * goops-snarf.h (SCM_SLOT_SCM): scm_class_SCM --> scm_class_scm.
  147.     (Thanks to Maurizio Vitale.)
  148.     
  149. 2000-06-04  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  150.  
  151.     * goops.scm (internal-add-method!): Bugfix: n-specialized must be
  152.     larger than the longest specializer list if any specializer list
  153.     contains a rest argument.  The fact that a method with rest
  154.     arguments has been added is now coded in the sign of
  155.     n-specialized.  (Thanks to Nicolas Neuss.)
  156.  
  157.     * dispatch.scm (method-cache-install!): Use the magnitude of
  158.     the n-specialized slot.
  159.  
  160.     * goops.c (go_to_hell): Cast object to SCM.
  161.  
  162. 2000-04-19  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  163.  
  164.     * goops.c (scm_sys_allocate_instance): Bugfix: Initialize setter
  165.     and procedure in entities before doing things which can cause GC.
  166.     Give more specific about information "what" to scm_must_malloc.
  167.     (scm_sys_inherit_magic_x): Make 0-slot instances have standard
  168.     (non-light) allocation.  This fixes a memory leak.
  169.  
  170. 2000-04-15  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  171.  
  172.     * save.scm: Rewritten in a more sensible way.
  173.     Added support for arrays and shared arrays.
  174.     (write-readably <pair>): Bugfix: Consider bindings when computing
  175.     properness of a list.
  176.     (restore, write-readably <object>): New restore syntax.
  177.     Added support for excluded references.
  178.     Fixed multiple top-level references to same object.
  179.     Fixed printing of literals.
  180.  
  181. 2000-04-13  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  182.  
  183.     * configure.in: Check for scm_shared_array_root.
  184.  
  185.     * goops.c (scm_shared_array_root, scm_shared_array_offset,
  186.     scm_shared_array_increments): New primities.  (These are provided
  187.     by newer Guile versions.)
  188.  
  189. 2000-04-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  190.  
  191.     * save.scm (enumerate!, write-readably): Handle uniform vectors.
  192.  
  193. 2000-04-12  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  194.  
  195.     * save.scm (enumerate!): Bugfix: Make sure that enumeration of the
  196.     cdr happens!
  197.     (get-set-for-each, access-for-each): Exclude class slots.
  198.     (load-objects): New method.
  199.  
  200. 2000-04-12  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  201.  
  202.     * save.scm (write-readably): Make default behaviour be to write
  203.     the object using `write'.
  204.  
  205.     * goops.scm (define-method): Added new, alternative, syntax which
  206.     probably will supercede the old.  [This is added so that people
  207.     can experiment with it a little.]
  208.  
  209.     * save.scm: New file.
  210.  
  211.     * Makefile.am (goops_sources): Added save.scm.
  212.  
  213. 2000-03-23  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  214.  
  215.     * goops.c (wrap_init): Cast second arg to SETCDR to SCM.
  216.     (create_smob_classes): Initialize the new real and complex smobs
  217.     with their correct classes.
  218.  
  219. 2000-03-14  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  220.  
  221.     * goops.c (create_smob_classes): Adaptations to reorganization of
  222.     types in Guile-1.3.5.
  223.  
  224. 2000-03-13  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  225.  
  226.     * goops.scm (compute-std-cpl): Modified to linearize according to
  227.     the C3 algorithm in
  228.     http://www.webcom.com/haahr/dylan/linearization-oopsla96.html.
  229.     (Thanks to Michael Livshin.)
  230.  
  231.     * util.scm (any, every, filter): New procedures.
  232.  
  233.     * goops.c, goops.h: Adapt GOOPS to new definition of the SCM type.
  234.  
  235. 2000-03-08  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  236.  
  237.     * goops.texi: Updated.
  238.  
  239. 2000-02-11  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  240.  
  241.     * goops.c (scm_sloppy_num2ulong): Added.
  242.     (scm_sys_logand): Rewritten.
  243.  
  244. 2000-02-10  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  245.  
  246.     * goops.c (scm_accessor_method_slot_definition): New selector.
  247.     (Will soon be rewritten together with the others.)
  248.  
  249.     * goops.scm (compute-getter-method, compute-setter-method): Add
  250.     initialization argument for slot-definition.
  251.  
  252.     * goops.c (create_standard_classes): New slot in
  253.     <accessor-method>: slot-definition.
  254.  
  255. 2000-01-12  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  256.  
  257.     * goops.scm (goops-error): Use `oldfmt'.
  258.  
  259.     * goops.c, goops.h (scm_oldfmt): New procedure.
  260.     (scm_c_oldfmt, scm_c_oldfmt0): New functions.
  261.     Inserted SCM_OLDFMT around all format strings with ~S.
  262.  
  263.     * configure.in: Added test for scm_simple_format.
  264.  
  265.     * goops.c, goops.scm, composite-slot.scm, stklos.scm: Replace %S
  266.     with ~S everywhere.
  267.  
  268. 2000-01-11  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  269.  
  270.     * goops.texi: Updated reference manual with Neil's work.
  271.  
  272. 2000-01-10  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  273.  
  274.     * goops.scm (make-generic-bound-check-getter): Inserted missing
  275.     comma which ties down the value of `assert-bound' in the compiled
  276.     closure.  (Thanks to Thierry Bezecourt.)
  277.  
  278. 2000-01-07  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  279.  
  280.     * goops.h, goops.c: Export the C variables for all classes defined
  281.     in libgoopscore.
  282.  
  283. 2000-01-04  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  284.  
  285.     * README, BUGS: Added note about generic function application MOP
  286.     not yet implemented.
  287.  
  288.     * goops-tutorial.texi (Class precedence list): Removed paragraph
  289.     about difference between GOOPS and CLOS with regard to the cpl.
  290.  
  291.     * README, goops.texi, goops-tutorial.texi: Fixed typos.
  292.  
  293. 2000-01-03  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  294.  
  295.     * Makefile.am: Added variable `miscdocs' and removed a couple of
  296.     left-over lines.
  297.  
  298.     * COPYRIGHTS, goops-tutorial.texi: Technically, GOOPS is now
  299.     derived from STk-4.0.1, so we use the STk-4.0.1 copyright.
  300.  
  301. 1999-12-24  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  302.  
  303.     * goops.scm (shallow-clone, deep-clone): Added new arg in
  304.     call to %allocate-instance.
  305.  
  306. 1999-12-20  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  307.  
  308.     * Version 0.1.6 released.  (Sigh...)
  309.  
  310.     * goops.scm (make-closure-variable): Makes the primitive getter,
  311.     which shouldn't have boundness checking.
  312.     (slot-definition-init-form): New procedure; exported.
  313.     (compute-getter-method, compute-setter-method): New generic
  314.     functions.
  315.  
  316.     * Version 0.1.4 released.
  317.  
  318.     * Makefile.am (libgoopscore_la_LDFLAGS): Bumped version number.
  319.  
  320.     * stklos.scm (write-object): Exported.
  321.     (define-method): STKlos version.
  322.  
  323.     * goops.c (scm_sys_logand): Temporary replacement for the
  324.     INUM-only libguile version.
  325.  
  326.     * goops.scm (%logand): Exported.
  327.  
  328.     * dispatch.scm (cache-try-hash!): Use %logand.
  329.  
  330. 1999-12-18  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  331.  
  332.     * goops.scm (make-bound-check-get): New procedure. Uses
  333.     `@assert-bound-ref'.
  334.     (bound-check-get): New procedure.
  335.  
  336.     * goops.c (scm_init_goops): Conditionally add extra arg to
  337.     scm_mutex_init.
  338.     (scm_at_assert_bound_ref): New function.
  339.  
  340.     * configure.in: Define SCM_MUTEX_INIT_TWO_ARGS if scm_mutex_init
  341.     takes an extra attributes arg.
  342.  
  343.     * goops.scm (method-source): Bugfix.
  344.  
  345.     * Makefile.am (.c.x): Remove .x-file on failure.
  346.     (DISTCLEANFILES): Added *.x.  (Thanks to Anders Holst.)
  347.  
  348.     * goops.c (scm_assert_bound): New function.
  349.     
  350.     * goops.scm (compute-slot-accessors): Only use boundness checking
  351.     if necessary.
  352.     (make-closure-variable): New procedure.  Only use boundness
  353.     checking if necessary.
  354.     (compute-get-n-set): Use `make-closure-variable'.
  355.     
  356. 1999-12-15  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  357.  
  358.     * goops.c (scm_compute_applicable_methods): Bugfix: An accessor is
  359.     only applicable if the argument matches the formal exactly in its
  360.     first argument.
  361.  
  362.     * goops.scm (make-accessor): Make it possible to create accessors
  363.     without names.  (Thanks to Eric Moore.)
  364.  
  365.     * goops.c (change_class): Renamed from change_object_class.
  366.     Change-class protocol now fixed: Keep objects in hell before they
  367.     receive their new bodies.
  368.     (hell): New data structure.
  369.     (burnin, go_to_hell, go_to_heaven, purgatory): New functions.
  370.  
  371. 1999-12-14  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  372.  
  373.     * goops.c (SCM_GOOPS_UNBOUND): Define as SCM_UNBOUND if existent.
  374.  
  375. 1999-12-12  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  376.  
  377.     * goops.c (set_slot_value_if_unbound): Removed.
  378.     (slot_definition_using_name): New function.
  379.     (get_slot_value, set_slot_value): Now takes a slot definition
  380.     instead of name as third (fourth) arg.
  381.     (get_slot_value_using_name, set_slot_value_using_name): Same
  382.     signature as old versions of get/set_slot_value.
  383.     (scm_sys_initialize_object): Use get/set_slot_value directly and
  384.     using the slot definition so that initialization becomes
  385.     O(n_slots) instead of O(n_slots^2).  Initialization also becomes
  386.     independent of slot naming.
  387.  
  388. 1999-12-08  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  389.  
  390.     * goops.scm (compute-slots): New generic function in the MOP.
  391.     (initialize): Use `compute-slots' when computing slots for a new
  392.     class.
  393.  
  394. 1999-12-04  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  395.  
  396.     * dispatch.scm (cache-try-hash!): Bugfix: Measure max number of
  397.     cache misses for any method instead of the sum of cache misses for
  398.     all methods.
  399.  
  400. 1999-10-13  Christian Lynbech  <chl@tbit.dk>
  401.  
  402.     * goops.scm (export): Added 'update-instance-for-different-class'.
  403.     (change-object-class): Added call to
  404.     'update-instance-for-different-class'.
  405.     (update-instance-for-different-class): New generic function.
  406.  
  407.     * mop.text: Added 'update-instance-for-different-class'
  408.  
  409. 1999-10-08  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  410.  
  411.     Bugfix: Given method M1 with specializers S1, ..., Sk and M2 with
  412.     specializers S1, ..., Sk, Sk+1, ... (specializers S1, ..., Sk same
  413.     as for M1), a call to M2 got a cache hit on M1 if M1 had been used
  414.     before.  This is fixed with the following changes:
  415.     
  416.     * dispatch.scm (method-cache-install!): Don't initialize
  417.     n-specialized here.
  418.  
  419.     * goops.scm (internal-add-method!): Set n-specialized to the
  420.     number of specializers + 1 for rest arg specializers.
  421.  
  422.     * goops.c (scm_sys_invalidate_method_cache_x): Initialize
  423.     n-specialized in the method cache here.
  424.  
  425. 1999-09-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  426.  
  427.     * dispatch.scm (memoize-method!): Bugfix: Handle no-applicable
  428.     cases with zero arguments.
  429.  
  430. 1999-09-20  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  431.  
  432.     * goops.c, goops.h (scm_generic_capability_p): New procedure.
  433.  
  434.     * goops.scm (add-method!): Use `generic-capability?' to generate
  435.     nice error message in case we try to add a method to a procedure
  436.     which can't be upgraded to a primitive-generic.
  437.  
  438. 1999-09-19  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  439.  
  440.     * goops.scm (define-method): Don't automatically pick up a
  441.     pre-existing procedure as default method if a binding with the
  442.     same name as the generic function referred to exists.  Instead
  443.     require that it really is a generic function, or equivalent.
  444.  
  445. 1999-09-15  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  446.  
  447.     * README, goops.texi (Introduction): Revised the presentation of
  448.     GOOPS in line with suggestion from Per Bothner.
  449.  
  450.     * describe.scm (safe-class-name): New procedure: Checks that the
  451.     class has a name before calling class-name.  Use it throughout
  452.     instead of class-name.  (Thanks to Bernard Urban.)
  453.  
  454.     * goops.scm, goops.c, goops.texi, README (write-object,
  455.     display-object): Removed.  Instead use the new primitive generics
  456.     `display' and `write'.
  457.  
  458. 1999-09-07  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  459.  
  460.     * goops.scm (primitive-generic-generic): Exported.
  461.  
  462. 1999-09-02  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  463.  
  464.     * Makefile.am (install-exec-hook): Use `dlname' in libgoopscore.la
  465.     to determine the system dependent name of the library link.
  466.  
  467. 1999-08-29  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  468.  
  469.     * goops.c (create_standard_classes): scm_class_foreign_object made
  470.     a subclass to scm_class_object.
  471.     (get_slot_value, set_slot_value): Use scm_eval_body.
  472.  
  473. 1999-08-26  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  474.  
  475.     * configure.in: GOOPS is now dependent on Guile >= 1.3.3.
  476.  
  477.     * goops.h: Representation of GOOPS objects modified: Only one
  478.     entity and operator procedure now.
  479.  
  480.     * goops.c (create_standard_classes): New class
  481.     <primitive-generic>.
  482.  
  483.     * goops.scm (define-primitive-generic): New special form.
  484.  
  485.     * goops.c (scm_init_goops): Create and define generic
  486.     scm_no_applicable_method.
  487.  
  488.     * goops.c (memoize_method): Now returns the cmethod to evaluate.
  489.     (call_memoize_method): Bugfix: Check that another thread hasn't
  490.     inserted a method between the cache miss and locking the mutex.
  491.     (This bug wouldn't have shown itself until POSIX threads.)
  492.  
  493.     * dispatch.scm (method-entry): Moved to compile.scm.
  494.  
  495.     * compile.scm (make-make-next-method): Use compute-cmethod.
  496.     (compute-cmethod): New procedure: Uses code-table if possible.
  497.  
  498. 1999-08-23  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  499.  
  500.     * goops.c (scm_sys_allocate_instance): Rewritten.
  501.  
  502.     * dispatch.scm (memoize-method!): Mark as system-procedure.
  503.  
  504.     * describe.scm (describe): Say #<unbound> instead of #[unbound].
  505.  
  506.     * goops.scm (compute-slot-accessors): Bugfix: The slots argument
  507.     is the direct-slots.  The old code assumed all slots.
  508.  
  509. 1999-08-22  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  510.  
  511.     * stklos.scm: New file: STKlos compatibility module.
  512.     
  513.     * Makefile.am (goopsdata_DATA): Added stklos.scm.
  514.  
  515.     * compile.scm (next-method?): Temporary predicate to check if
  516.     the method might be using next-methods.
  517.     (compile-method): Use next-method?.
  518.  
  519.     * goops.scm (slot-unbound, slot-missing, no-next-method): Mark as
  520.     system procedures so that they won't turn up in backtraces;
  521.     Moved some utilities over to util.scm;
  522.     Better error checking in class macro.
  523.  
  524.     * composite-slot.scm (compute-propagated-get-n-set): Removed some
  525.     remnant code.
  526.  
  527. 1999-08-21  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  528.  
  529.     * dispatch.scm (method-cache-insert!): Grow cache in multiples of
  530.     2 starting with 1.
  531.     (hash-threshold): Decreased to 3.
  532.  
  533.     * goops.c, goops.h (SCM_INITIAL_MCACHE_SIZE): Renamed from
  534.     SCM_INITIAL_HASH_SIZE and set to 1.
  535.  
  536.     * goops.scm (class-slot-ref, class-slot-set!): New public procedures.
  537.  
  538.     * goops.c (scm_goops_version): Version information.
  539.  
  540.     * versiondat.h.in: New file.
  541.  
  542.     * Makefile.am: Install versiondat.h under $(includedir)/goops.
  543.  
  544.     * goops.scm (goops-version): Exported.
  545.  
  546.     * goops.scm, dispatch.scm, compile.scm: Removed debugging code and
  547.     disabled backtracing.
  548.  
  549. 1999-08-20  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  550.  
  551.     * goops.c (scm_add_slot): Conform to new-style methods (no
  552.     next-method argument).
  553.     (get_slot_value, set_slot_value): Expand bodies; Allow primitive
  554.     getters and setters.
  555.  
  556.     * goops.scm (compute-slot-accessors): Use new-style standard
  557.     accessor forms when possible, otherwise use low-level getter or
  558.     setter directly.
  559.  
  560.     * dispatch.scm (make-apply-generic apply-0-arity-method
  561.     make-method-cache): Removed.  (Have been moved to C level.)
  562.     (method-entry): Insert the cmethod entry into code-table before
  563.     compiling the method.
  564.  
  565.     * goops.c (compute_getters_n_setters): Pay attention to keywords
  566.     #:init-value and #:init-thunk
  567.     (memoize_method): Lock method cache mutex during method
  568.     memoization.
  569.  
  570.     * goops.c, goops.h (cache-mutex): New slot in class <generic>.
  571.  
  572.     * goops.scm (initialize generic): Removed a few slot
  573.     initializations (now done by %initialize-object).
  574.  
  575. 1999-08-18  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  576.  
  577.     * goops.scm (define-class): Prevent redefinition of non-object
  578.     classes.
  579.     (make-class): More correct (and heavier) condition for adding
  580.     <object> as a default super class: Add <object> last in supers if
  581.     <object> isn't present in any of the class-precedence-lists of
  582.     supers.
  583.  
  584. 1999-08-10  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  585.  
  586.     * dispatch.scm (method-cache-install!): Bugfix: Handle fewer args
  587.     than n-specialized.
  588.  
  589. 1999-08-09  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  590.  
  591.     * Makefile.am, compile.scm, util.scm: New files.
  592.  
  593.     * goops.c, goops.h: Added n-specialized slot in generics.
  594.  
  595. 1999-08-05  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  596.  
  597.     * goops.c: Removed old apply generic protocol.
  598.  
  599.     * goops.h (scm_si_code_table): New method slot.
  600.  
  601.     * goops.c: Updated Copyright notice.
  602.     (scm_make): Initialize code table slot for methods.
  603.  
  604. 1999-08-04  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  605.  
  606.     * dispatch.scm, Makefile.am: Added dispatch.scm.
  607.  
  608.     * goops.c, goops.h (scm_sys_invalidate_class): Added;
  609.     (default-slot-definition-class, keyword-access): New slots;
  610.     Rearranged slots.
  611.     (scm_m_atslot_ref, scm_m_atslot_set_x, scm_m_dispatch,
  612.     scm_m_hash_dispatch): New macros.
  613.     (memoize_method): Dispatcher for the generic function
  614.     `memoize-method!'.  Plugs into scm_memoize_method in eval.c.
  615.  
  616.     * goops.scm (class-redefinition): Call %invalidate-class;
  617.     Use new method dipatch protocol.
  618.  
  619.     * goops.c, goops.h: Renamed SCM_METACLASS_GOOPS_LAYOUT -->
  620.     SCM_CLASS_CLASS_LAYOUT; SCM_CLASSF_ACCESSOR -->
  621.     SCM_CLASSF_ACCESSOR_METHOD
  622.  
  623. 1999-08-03  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  624.  
  625.     * goops.c (create_standard_classes): New slot in <method>:
  626.     code-table.
  627.  
  628. 1999-07-27  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  629.  
  630.     * configure.in: Check that libguile is fresh enough.
  631.  
  632. 1999-07-25  Mikael Djurfeldt  <mdj@thalamus.nada.kth.se>
  633.  
  634.     * goops.c (prep_hashsets): Added.
  635.     (scm_sys_inherit_magic): Call prep_hashsets.
  636.  
  637.     * goops.scm (compute-std-cpl): Compute cpl correctly.
  638.     (Topological sort from tiny clos.)
  639.  
  640.     * goops.c (scm_class_port, scm_class_input_port,
  641.     scm_class_output_port, scm_class_input_output_port): Added.
  642.     (make_standard_classes): Initialize new classes.
  643.     (make_class_from_template): Added.
  644.     (make_extended_class): Use make_class_from_template.
  645.     (local_make_port_classes): Added. Plugs into
  646.     objects.c:scm_make_port_classes.
  647.     (make_port_classes): Make port classes corresponding to all
  648.     existing port types.
  649.     (scm_init_goops): Call make_port_classes.
  650.  
  651.     * describe.scm: Use Guile's format instead of slib's.
  652.  
  653. 1999-06-24  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  654.  
  655.     * goops.scm (define-method): Made possible to define setter methods.
  656.  
  657. 1999-06-23  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  658.  
  659.     * configure.in, Makefile.am: Added a configure option
  660.     --enable-fdi-example which causes fdi.c to be compiled and linked
  661.     into guile-oops.
  662.  
  663.     A "foreign data interface" which is supposed to make it easy to
  664.     interface to application data structures has been added.  This is
  665.     very experimental and perhaps not very nice.  I hope that people
  666.     will get better ideas.  :)
  667.  
  668.     * goops.c (scm_load_goops, scm_make_foreign_object,
  669.     scm_free_foreign_object, scm_make_class, scm_add_slot,
  670.     scm_wrap_object, scm_wrap_component, scm_ensure_accessor,
  671.     scm_add_method): New functions.
  672.  
  673.     (scm_sys_allocat_instance): Now takes a second arg (just as the
  674.     corresponding method in the MOP).  It is used by
  675.     scm_make_foreign_object.
  676.  
  677.     (map, filter_cpl, compute_cpl): Better initial approximation to
  678.     cpl computation (we use multiple inheritance already during
  679.     bootstrap).
  680.     (scm_class_foreign_class): New class: The foreign object meta
  681.     class.
  682.     (scm_class_foreign_object): New class: The foreign object class.
  683.     (scm_class_self, scm_class_protected, scm_class_opaque,
  684.     scm_class_read_only, scm_class_protected_opaque,
  685.     scm_class_protected_read_only, scm_class_scm, scm_class_int,
  686.     scm_class_float, scm_class_double): Slot classes.
  687.     
  688.     (scm_sys_prep_layout_x): Largely rewritten: Now uses slot types
  689.     to build the layout.
  690.  
  691.     (scm_makekey): Removed. (Replaced by scm_c_make_keyword in
  692.     libguile.)
  693.  
  694.     (scm_basic_basic_make_class): Guts of old scm_basic_make_class
  695.     which has been split in order to be more useful.
  696.     (scm_build_class_class_slots): Build slot definitions for class
  697.     class.  (Torn out of create_basic_classes.)
  698.  
  699.     * goops.h (SCM_METACLASS_GOOPS_LAYOUT): Noe includes the required
  700.     fields.
  701.     (SCM_CLASSF_FOREIGN): New class flag: Indicates that the instance
  702.     is a foreign object.
  703.     (SCM_IS_A_P): New macro.  Corresponds to the scheme predicate.
  704.     (scm_si_constructor, scm_si_destructor): New slots of foreign
  705.     classes.
  706.  
  707.     * fdi.c: New file: Foreign data interface example.
  708.  
  709.     * guile-oops.c: Conditionally use scm_init_fdi.
  710.  
  711.     * goops-snarf.h: Snarf macros for the foreign data interface.
  712.  
  713.     * goops.scm (initialize, write-object): New methods for
  714.     <foreign-object>:s.
  715.  
  716. 1999-06-18  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  717.  
  718.     * goops.h (STKLOS_VERSION, scm_stklos_version): Removed.
  719.  
  720. 1999-06-17  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  721.  
  722.     * goops.scm (add-method!): Made generic => added to the MOP.
  723.  
  724. 1999-06-15  Mikael Djurfeldt  <mdj@mdj-pc.nada.kth.se>
  725.  
  726.     * goops.scm (method): Allow empty method bodies.
  727.  
  728.     * goops.c (scm_sys_prep_layout_x): Handle empty layouts
  729.     correctly.  (Don't call scm_must_malloc.)
  730.     (scm_sys_allocate_instance): Don't allow empty instances.  (Maybe
  731.     this should be changed.)
  732.  
  733. 1999-04-12  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  734.  
  735.     * goops.scm (slot-definition-init-value): Renamed from
  736.     slot-definition-init; Replaced #:init keyword with #:init-value.
  737.     (class): Re-introduce #:init-form.
  738.  
  739. 1999-03-22  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  740.  
  741.     * New libtool: 1.2f
  742.     * ltmain.sh, ltconfig, config.guess, config.sub: New versions.
  743.     * README: Mention new version number of libtool.
  744.  
  745. 1999-03-21  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  746.  
  747.     * goops.c (make_struct_classes): New argument order in
  748.     scm_internal_hash_fold: Moved table argument last.
  749.  
  750.     * goops.scm (define-class, class): Change in syntax: Removed the
  751.     redundant pair of parenthesis around the slot definitions.  (We
  752.     anyway need to go through the list of slots in both macros, so
  753.     this change in syntax doesn't introduce any extra cost.)
  754.  
  755.     * active-slot.scm, composite-slot.scm: Changed to new class syntax.
  756.  
  757. 1999-03-19  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  758.  
  759.     * goops.scm (write-object): New method: More informative printing
  760.     of methods.
  761.     (make-method): Exported.
  762.  
  763.     * Makefile.am (internal.scm, active-slot.scm, composite-slot.scm):
  764.     Added.
  765.     
  766.     * internal.scm (oop goops internal): New module.  Exports all
  767.     internal bindings in (oop goops).
  768.  
  769.     * active-slot.scm (oop goops active-slot),
  770.     composite-slot.scm (oop goops composite-slot): New modules.
  771.     Ported from STKlos.
  772.  
  773. 1999-03-18  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  774.  
  775.     * goops.scm, Makefile.am, goops.c, goops.h, guile-oops.c: Renamed
  776.     module (oop goopscore) --> (oop goops goopscore).
  777.     describe.scm:
  778.     Renamed module (oop describe) --> (oop goops describe).
  779.  
  780.     * goops.c (create_basic_classes): Renamed from
  781.     create_Top_Object_class.
  782.     (scm_basic_make_class, create_basic_classes): Use maplist.
  783.     (compute_getters_n_setters): Assume alist slot lists.
  784.     (scm_get_keyword): Improved error messages.
  785.  
  786. 1999-03-18  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  787.  
  788.     * goops.c (maplist): Utility used to construct slot lists.
  789.     (remove_duplicate_slots, scm_sys_initialize_object): Simplify by
  790.     assuming that slot lists are proper alists.
  791.  
  792.     * goops.scm (compute-std-cpl): Compute a CLOS-style cpl.
  793.     (define-class): Bugfix: Added `new' as alternative in the
  794.     redefinition condition;
  795.     Added write-object in the print slot of builtin classes
  796.     <operator-class> and <operator-with-setter-class>.
  797.  
  798. 1999-03-16  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  799.  
  800.     * goops.scm (define-class-pre-definition): Bugfix: Pass name to
  801.     accessor constructors.
  802.     (define-class): Skip options with non-symbolic arg, don't
  803.     terminate scan!
  804.     (compute-cpl): Made a generic.
  805.  
  806. 1999-03-15  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  807.  
  808.     * Makefile.am: oop directory removed.
  809.     * goops.scm, describe.scm: Moved here from old directory oop.
  810.  
  811. 1999-03-15  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  812.  
  813.     * oop: New directory.  Renamed from goops.
  814.  
  815.     * Makefile.am: Renamed goops --> oop.
  816.  
  817.     * oop/goops.scm (make-class): Now demands that slot definitions
  818.     always are lists.  (The `class' macro does the conversion so that
  819.     the user of those macros still can use simple symbols as slot
  820.     definitions.)
  821.  
  822.     * oop/goops.scm (define-class, class): A major new thing is that
  823.     all slot options are evaluated, i.e. also #:getter, #:setter, and,
  824.     #:accessor options.  Because of this, the corresponding <generic>
  825.     and <generic-with-setter>s must exist before creating the class.
  826.     `define-class' does this automatically if they don't exist
  827.     beforehand.
  828.  
  829.     * oop/goops.scm (slot-definition-init,
  830.     slot-definition-init-thunk): New selectors for the new slot
  831.     options #:init and #:init-thunk.
  832.     (compute-getters-n-setters): Handle new selectors.
  833.     (slot-definition-init-form): Removed.
  834.     (class-slot-definition): Use assq instead of assoc.
  835.     (slot-definition-init-form): Removed #:init-form alternative.
  836.     goops/goops.scm (initialize <operator-class>): Accept #:procedure
  837.     keyword.
  838.  
  839.     * oop/goops.scm (method-source): Renamed from method-body;
  840.     Use map* instead of map.
  841.     (is-a?): Use memq instead of memv.
  842.     (map*, for-each*): Moved here from compat.scm.
  843.     
  844.     * oop/goops.scm, oop/describe.scm: Replaced use of when and unless
  845.     everywhere.
  846.  
  847.     * oop/goops.scm (define-module): Added #:no-backtrace option;
  848.     Set the system-procedure property on apply-generic-<n> in order
  849.     that these should not turn up at the end of backtraces.
  850.     (goops-error): Call `save-stack'.
  851.     
  852.     * goops.c (make_extended_class): New function: Creates wrapper
  853.     classes for smob and struct types.
  854.     (make_smob_classes, make_struct_classes): Creates smob and struct
  855.     wrapper classes upon initialization of Goops.  (Wrapper classes
  856.     continue to be created when new smobs and structs are
  857.     loaded/accessed.)
  858.  
  859.     * goops.c (scm_make): Set the name property of generics.
  860.     (make_stdcls): Allow for multiple inheritance by passing a list of
  861.     supers as fourth arg.  (Note that the cpl gets screwed up in this
  862.     case and has to be patched.)  This is currently used for
  863.     initialization of <generic-with-setter>.
  864.     (make_standard_classes): Removed `name' slot in <generic>.
  865.     (scm_generic_function_name): Use scm_procedure_name.
  866.  
  867.     
  868.     New class redefinition protocol: In the old protocol new class
  869.     objects got a new heap header but instances retained their old
  870.     header.  The new protocol keeps the old header also for redefined
  871.     classes.
  872.  
  873.     * goops.c (TEST_CHANGE_CLASS): Rewritten in order to comply with
  874.     the new class redefinition protocol.
  875.     (SCM_OBJ_CLASS_REDEF): New macro which accesses the `redefined'
  876.     slot via the instance.
  877.     (scm_sys_modify_class): New function.  Swaps headers between two
  878.     class objects.
  879.     
  880.     * oop/goops.scm: Corrected bugs in the class redefinition
  881.     protocol.
  882.  
  883.  
  884.     * goops.c: New setter slot in classes:
  885.     (scm_sys_prep_layout_x): Modified class layout.
  886.     (create_Top_Object_Class): setter slot name.
  887.  
  888.     * goops.h (struct scm_metaclass_goops): New setter slot
  889.     (scm_si_methods): Shifted (to 0);
  890.     Shifted slot numbers.
  891.  
  892.     * goops.c (scm_class_entity, scm_class_entity_with_setter,
  893.     scm_class_generic_with_setter,
  894.     scm_class_operator_with_setter_class): New basic classes.
  895.     An alternative to <operator-with-setter-class>es would be to turn
  896.     `setter' into a <generic> and create a higher-order method which
  897.     returns the apropriate setter method.  Although this might be neat
  898.     theoretically, I judged it to be too inefficient.  (It doesn't
  899.     seem like a good idea to create a closure for every `set!'
  900.     operation.);
  901.     (make_standard_classes): Initialize
  902.     scm_class_procedure_with_setter.
  903.     (scm_sys_set_object_setter_x): New procedure. Sets setter slot of
  904.     <entity-with-setter>'s or <operator-with-setter-class>es.
  905.  
  906.  
  907.     * goops.c (scm_sys_inherit_magic_x): Set struct flag
  908.     SCM_STRUCTF_LIGHT for classes which aren't meta or entity
  909.     classes.  This allows for a much more efficient allocation of
  910.     instances, both with regard to speed and memory.
  911.     (scm_sys_allocate_instance): Use scm_alloc_struct (or
  912.     scm_must_malloc directly for "light" objects) when allocating
  913.     instances.
  914.  
  915.  
  916.     * goops/oop (define-accessor): New macro.  Creates a
  917.     <generic-with-setter> with a <generic> as setter.
  918.     (make-accessor, ensure-accessor): New procedures.
  919.     
  920. 1999-03-08  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  921.  
  922.     * goops/goops.scm (class-redefinition): Export.
  923.     (define-generic): Use make-generic.
  924.     (make-generic): New procedure.
  925.     (make-generic-function, ensure-generic-function): Removed.
  926.     (define-generic): Rewritten.
  927.     (define-method): Rewritten.
  928.     (make-method): Now a procedure.
  929.     (ensure-method): Removed.
  930.     (method): Rewritten.
  931.     (add-method!): Renamed from add-method.
  932.     (transform-specializers): Replaces `specializers'.
  933.  
  934. 1999-03-06  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  935.  
  936.     * goops/goops.scm (initialize <class>): Convert all slot
  937.     definitions to lists; Simplified code dealing with slot
  938.     definitions throughout since slot definitions can no longer be
  939.     simple symbols.
  940.     (slot-init-function): Only take slot names as second arg.
  941.     (class): New special form.
  942.     (ensure-class): Removed.
  943.     (make-class): Remade into a procedure.
  944.     (define-class): Now uses the procedure `make-class'.
  945.  
  946. 1999-03-01  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  947.  
  948.     * guile-oops.c (inner_main): Renamed
  949.     scm_init_goops_goopscore_module () -->
  950.     scm_init_oop_goopscore_module ().
  951.  
  952.     * config.guess, config.sub, install-sh, mdate-sh, missing,
  953.     mkinstalldirs: New versions from automake-1.4.
  954.  
  955.     * goops/compat.scm, goops/describe.scm: Renamed goops --> oop.
  956.  
  957. 1999-02-20  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  958.  
  959.     * config.guess, config.sub, ltconfig, ltmain.sh: New versions from
  960.     libtool-1.2.
  961.  
  962.     * goops.c, goops.h (scm_i_get_keyword): Added const.
  963.  
  964. 1999-01-30  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  965.  
  966.     * goops/goops.scm: Don't use module (ice-9 setf).
  967.  
  968.     * goops.c, goops.h, goops/goops.scm: Changed module name from
  969.     (goops *) to (oop *).
  970.  
  971. 1999-01-21  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  972.  
  973.     * goops.c (scm_class_of, CLASS_REDEF): Moved to
  974.     libguile/objects.[hc].
  975.  
  976.     * goops.h (scm_si_hashsets): New slots.  Hashvalues for fast
  977.     multimethod lookup.
  978.  
  979. 1999-01-21  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  980.  
  981.     * goops.c (scm_init_goops_goopscore_module): Added cast for
  982.     scm_init_goops.
  983.  
  984.     * goops/goops.scm (change-object-class): Only copy slots with
  985.     instance allocation. (Thanks to Christian Lynbech.)
  986.  
  987.     * goops.c: Renamed class Xxx --> scm_class_xxx.
  988.  
  989.     * goops.c, goops.h: Renamed and moved C globals containing basic
  990.     classes to libguile/objects.c; Substituted class flags for object
  991.     flags.
  992.     
  993.     * goops.c (scm_sys_inherit_magic_x): Mask flags with
  994.     SCM_CLASSF_INHERIT.
  995.  
  996.     * goops.h (SCM_CLASSF_INHERIT): New constant: Selects which flags
  997.     to inherit.
  998.  
  999. 1998-12-20  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1000.  
  1001.     * goops.h, goops.c: Renamed classe --> class everywhere.  (ANSI C
  1002.     differs between Class and class, so there'll be no conflict.)
  1003.  
  1004.     * goops.c (scm_sys_prep_layout_x): Removed label exit_err.
  1005.     (scm_basic_make_class): Removed setting of object accessors slot.
  1006.     (That slot doesn't exist in Goops.)
  1007.  
  1008. 1998-12-15  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1009.  
  1010.     * goops.h (scm_si_methods): Changed from 5 to 1.
  1011.  
  1012.     * goops.c (make_standard_classes): Remove procedure slots for
  1013.     generic functions.
  1014.     (scm_sys_prep_layout_x): No special treatment of entity classes
  1015.     any longer.
  1016.  
  1017. 1998-12-21  Christian Lynbech  <chl@tbit.dk>
  1018.  
  1019.     * goops/goops.scm (change-object-class): Only copy slot values if
  1020.     slot has allocation instance.
  1021.  
  1022. 1998-12-08  Christian Lynbech  <chl@tbit.dk>
  1023.  
  1024.     * goops/goops.scm (change-object-class): Attempt initialization
  1025.     from init function even if slot was present (but unbound) in old
  1026.     class.
  1027.  
  1028. 1998-12-05  Christian Lynbech  <chl@tbit.dk>
  1029.  
  1030.     * goops/goops.scm: Reexport setf! and setter.
  1031.  
  1032.     * goops/goops.scm (compute-slot-accessors): Changed handling of
  1033.     :accessor option to use new setf functionality for setter.
  1034.     Added import of module (ice-9 setf).
  1035.  
  1036. 1998-12-04  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1037.  
  1038.     * goops/goops.scm (goops-error): Call scm-error with correct
  1039.     arguments.
  1040.  
  1041. 1998-12-04  Christian Lynbech  <chl@tbit.dk>
  1042.  
  1043.     * goops/goops.scm (goops-error): New function.
  1044.     Changed usage of `error' into `goops-error' to get error message
  1045.     formatting and changed directive from "~" to "%".
  1046.     
  1047.     * goops.h: Added missing prototypes for a nunch of functions.
  1048.     Added #include <guile/gh.h>.
  1049.  
  1050.     * goops.c (sort_applicable_methods): Initialize `vector' to the
  1051.     empty list.
  1052.     (scm_sys_prep_layout_x): Removed local variale `layout'.
  1053.  
  1054. 1998-12-01  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1055.  
  1056.     * goops.c (apply_generic_0, apply_generic_1, apply_generic_2,
  1057.     apply_generic_3): Pass SCM_BOOL_F instead of SCM_UNDEFINED as
  1058.     next-method argument.  Otherwise scm_apply will get the wrong
  1059.     impression of number of arguments.
  1060.  
  1061. 1998-11-27  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1062.  
  1063.     * Makefile.am (subpkgdata_DATA): Added goops/describe.scm.
  1064.     Renamed libgoops --> libgoopscore.
  1065.  
  1066.     * goops/goops.scm: Use module (goops goopscore).
  1067.     (initialize <class>): %inherit-magic! before initializing layout
  1068.     slot.
  1069.     (initialize <generic>): Let instances of subclasses of <generic>
  1070.     use apply-generic.
  1071.  
  1072.     * goops.c (CLASSP): Use the metaclass flag to determine if the
  1073.     object is a class.  This is faster than looking in the supers
  1074.     slot.
  1075.     (scm_prep_layout_x): Make procedure slots opaque.
  1076.     (scm_basic_make_class): Prep layout *after* inheriting magic, so
  1077.     that we can use the flags for information;
  1078.     Set the SCM_OBJF_GOOPS flag here.  scm_sys_inherit_magic_x uses it
  1079.     for argument checking.
  1080.     (scm_class_of): Don't presume that all structs are Goops objects!
  1081.     (scm_sys_allocate_instance): Major rewrite of the class/object
  1082.     flag logic.
  1083.     (scm_make): Use scm_set_object_procedure_x to set the procedures.
  1084.     (scm_init_goops): Use a new scheme for loading bindings into the
  1085.     same module (goops goops) as the scheme code: We pretend that we
  1086.     are the module (goops goopscore) but switch to (goops goops) when
  1087.     creating bindings.  (The old scheme had big problems since the
  1088.     current module system isn't designed for having both scheme and
  1089.     object code in the same module.)
  1090.  
  1091.     * goops.h, goops.c: Renamed SCM_OBJF_GENERIC -->
  1092.     SCM_OBJF_PURE_GENERIC.
  1093.     (SCM_OBJ_FLAGS, SCM_SET_OBJ_FLAGS): New macros.
  1094.     (scm_init_goops_goopscore_module): Renamed from
  1095.     scm_init_goops_goops_module.
  1096.  
  1097.     * guile-oops.c (inner_main): Call scm_init_goops_goopscore_module.
  1098.  
  1099.     * goops.h (SCM_INST_TYPE): Use SCM_OBJ_FLAGS.
  1100.     (scm_si_print): New slot index.
  1101.  
  1102.     * goops/describe.scm: New file.
  1103.  
  1104.     * TODO: New file.
  1105.  
  1106. 1998-11-26  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1107.  
  1108.     * goops.c (scm_sys_inherit_magic_x): Return SCM_UNSPECIFIED.
  1109.  
  1110.     * goops.c, goops.h: Position of procedure slots moved in class
  1111.     objects.
  1112.  
  1113. 1998-11-25  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1114.  
  1115.     * goops/goops.scm: Moved STk compatibility code to
  1116.     goops/compat.scm.
  1117.  
  1118.     * goops/compat.scm: New file.
  1119.  
  1120.     * Makefile.am (subpkgdata_DATA): Added goops/compat.scm.
  1121.  
  1122.     * goops.c (Operator_class): New metaclass: This is the class of
  1123.     operator classes.  While an entity class keeps its procedure in
  1124.     the object itself, an operator class keeps it in the class object.
  1125.     (scm_basic_make_class): Set operator class flag for operator
  1126.     classes.
  1127.     (scm_sys_allocate_instance): Set entity and operator class flags
  1128.     for entities (check superclasses too!) and operators.
  1129.     (make_standard_classes): Initialize Operator_class.
  1130.  
  1131.     * goops/goops.scm (*unbound*, make-unbound, unbound?): Replaced by
  1132.     primitives.
  1133.     (compute-get-n-set): Use an ordinary scheme variable for slots
  1134.     with class and each-subclass allocation.
  1135.  
  1136.     * goops.c (SCM_GOOPS_UNBOUND, SCM_GOOPS_UNBOUNDP): New macros:
  1137.     Implements an unbound value internal to goops.  We can't use
  1138.     SCM_UNDEFINED since that value can't be handled by scheme code;
  1139.     Replaced SCM_UNDEFINED --> SCM_UNBOUNDP and SCM_UNBNDP -->
  1140.     SCM_GOOPS_UNBOUNDP on suitable places.
  1141.     (scm_goops_the_unbound_value): Holds the unbound value.
  1142.     (Later we may choose to implement this as an ISYM or for
  1143.     efficiency.)
  1144.     (scm_init_goops): Initialize the unbound value.
  1145.     (scm_make_unbound, scm_unbound_p): New primitives.
  1146.  
  1147. 1998-11-24  Mikael Djurfeldt  <mdj@mdj.nada.kth.se>
  1148.  
  1149.     * goops/goops.scm: Added <complex> to list of print slot
  1150.     initializations.
  1151.     (compute-getters-n-setters): Use `(procedure-property <proc> 'arity)'
  1152.     instead of `%procedure-arity' in `verify-accessors'.
  1153.  
  1154.     * goops.c (scm_class_of): Use TEST_CHANGE_CLASS to check for class
  1155.     redefinition if argument is a goops instance.
  1156.  
  1157.     * goops/goops.scm (ensure-class): Handle supers passed as
  1158.     meta-objects.
  1159.  
  1160.     * goops.c (set_slot_value_if_unbound): Apply init closure to an
  1161.     empty list, not a list containing an empty list.
  1162.  
  1163.     * Makefile.am (install-exec-hook): Do test -r instead of test -e
  1164.     in order to be backward compatible.
  1165.  
  1166. 1998-11-24  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1167.  
  1168.     * Makefile.am (install-exec-hook): Don't exit with an error if we
  1169.     haven't created libgoops.so.0
  1170.  
  1171. 1998-11-23  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1172.  
  1173.     * goops/goops.scm: Removed module workaround; Added :use-module on
  1174.     the module itself to load object code (which was what the
  1175.     workaround did);  Export public primitives defined by the object
  1176.     code.
  1177.  
  1178.     * goops.h: Added declaration of scm_init_goops_goops_module.
  1179.  
  1180.     * goops.c: Use new C level module interface <libguile/modules.h>
  1181.     to define and get bindings in the correct module.  (Now the full
  1182.     MOP should work!)
  1183.  
  1184.     * guile-oops.c: Call scm_init_goops_goops_module instead of
  1185.     scm_init_goops in order to postpone module creation until
  1186.     requested.
  1187.     
  1188.     * configure.in: Use aggressive warning messages if CC=gcc.
  1189.  
  1190. 1998-11-22  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1191.  
  1192.     * goops.c: Added #include <libguile/modules.h>
  1193.     (scm_init_goops): Use the new C interface to modules.
  1194.  
  1195. 1998-11-22  Mikael Djurfeldt  <mdj@kenneth>
  1196.  
  1197.     * Makefile.am (install-exec-hook): Added: Puts symbolic links to
  1198.     the dynamically linked library into the goops module directory.
  1199.  
  1200.     * configure.in: Removed unneccesary lines; Added AC_PROG_LN_S.
  1201.  
  1202.     * goops/goops.scm: Added workaround so that compiled code and
  1203.     interpreted code can coexist in the same module.
  1204.  
  1205. 1998-11-22  Mikael Djurfeldt  <mdj@barbara.nada.kth.se>
  1206.  
  1207.     * goops.h, goops.c: New files.  Port of stklos from STk-3.99.3
  1208.  
  1209.     * goops: New directory: Contains the scheme part of stklos.
  1210.     
  1211.